package com.golden.procedure.service;

import java.util.Date;

import com.golden.procedure.domain.WorkerDO;
import com.golden.procedure.query.WorkerQueryDO;
import com.golden.procedure.query.WorkerRoleQueryDO;
import com.golden.procedure.result.ResultDO;

/**
 * 工单服务人员管理 <b>Description: 服务人员信息、工作日历、工单人员设置等</b><br>
 * 
 * @author Reading.Reagan</a>
 * @version 1.0
 * @Note <b>ProjectName:</b> procedure-api <br>
 *       <b>PackageName:</b> com.golden.procedure.service <br>
 *       <b>ClassName:</b> IWorkerService <br>
 *       <b>Date:</b> 2018年9月25日 下午2:39:56
 */
public interface IWorkerService {

	/**
	 * 查询员工工作日历 <b>Description:包含出勤状态、每日任务数、拍摄数等</b><br>
	 * 
	 * @param query
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 下午2:02:24 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO workerCalendar(WorkerQueryDO query);

	/**
	 * 设置工位服务人员 <b>Description:</b><br>
	 * 
	 * @param workerDO
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 上午11:04:55 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO setWorker(WorkerDO workerDO);

	/**
	 * 更换工位服务人员 <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 上午11:04:55 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO editWorker(WorkerDO domain);

	/**
	 * 查询服务人员信息 <b>Description:通过服务人员id查询</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月20日 上午11:04:55 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO getWorker(Integer id);

	/**
	 * 获取员工信息 <b>Description: 获取员工信息、部门、岗位等信息</b><br>
	 * 
	 * @param employeeId
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 下午1:59:46 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO getEmployeeById(Integer employeeId);

	/**
	 * 查询员工信息 <b>Description:根据部门、岗位、姓名查询员工列表，可包含员工出勤及排班状态</b><br>
	 * 
	 * @param query
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 下午2:01:32 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO queryEmployee(WorkerQueryDO query);

	/**
	 * 查询工位服务成员 <b>Description:根据工位分组ID查询安排的服务人员</b><br>
	 * 
	 * @param query
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 下午2:01:32 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO queryBySiteSeat(WorkerQueryDO query);

	/**
	 * 查询单个员工出勤状态 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return WorkerAttendance
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 上午10:39:13 <br>
	 *       <b>Version:</b> 1.0
	 */
	public Integer getEmployeeStatus(Date date, Integer employeeID);

	/**
	 * 查询单个员工排班状态 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return Integer 状态: 0-空闲； 1-已安排; 2-排控冲突;
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月19日 上午10:39:19 <br>
	 *       <b>Version:</b> 1.0
	 */
	public Integer getWorkStatus(Date date, Integer employeeID);

	/**
	 * 根据用户及日期查询当天的acitiviti任务数 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return Integer
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月18日 下午5:51:15 <br>
	 *       <b>Version:</b> 1.0
	 */
	public Integer countActivitiTaskNum(Date date, Integer employeeID);

	/**
	 * 根据工作分类查询角色列表 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return Integer
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月18日 下午5:51:15 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO listRoleByWorkType(WorkerRoleQueryDO query);
	
	/**
	 * 查询角色名称 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return Integer
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月18日 下午5:51:15 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO queryWorker(WorkerQueryDO queryDO);
	
	/**
	 * 查询角色名称 <b>Description:</b><br>
	 * 
	 * @param date
	 * @param employeeID
	 * @return Integer
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月18日 下午5:51:15 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO delete(WorkerQueryDO queryDO);

	
}
